This invention relates to the compression of video signals, and more particularly it relates to detecting empty blocks in a video signal.
In a world wired for digital communication, the use of real time video encoders is becoming more common. For example, video encoders are used to prepare real time video images of exotic vacation spots for transmission to interested viewers having access to only a computer and a telephone line.
The process of encoding images in real time employs a great deal of computing power, and the computing power available to encode an image determines at least in part the amount of detail that can be included in the encoded image. For example, a thirty-two bit microprocessor running at 200 megahertz (MHZ) can successfully encode a 256xc3x97256 pixel real time video image, but to successfully encode a high resolution 1024xc3x971024 pixel real time video image typically employs a sixty-four bit microprocessor running at 450 megahertz.
Various strategies have been developed to encode high resolution images while reducing the computing power employed. One strategy involves identifying video data blocks that are xe2x80x9cemptyxe2x80x9d prior to encoding. A block is an array of pixels in a video frame. For example, in a video frame represented by a 1024xc3x971024 array of pixels, a block within the video frame can be represented by an 8xc3x978 array of pixels. An empty block is usually defined as a block that contains only zero-valued coefficients after a discrete cosine transform and quantization process are applied to the block. Such a block can be represented in a bitstream by a single bit indicating that the block is xe2x80x9cempty.xe2x80x9d If an empty block is identified prior to when the discrete cosine transform and quantization process are applied to the block, then the block is not encoded and the computing power normally employed to encode the block is saved. The saved computing power may be applied to encoding a higher resolution image or it may be applied to encoding real time video frames at a higher rate.
One approach to identifying empty blocks prior to encoding is to characterize each block by a single numerical value, and then to compare that numerical value to a fixed threshold value. The fixed threshold value is selected to roughly identify a value that separates empty blocks from non-empty blocks. If the numerical value associated with the block is less than the fixed threshold, then the block is assumed to be empty and is skipped. If the numerical value is greater than the fixed threshold, then the block is assumed to be non-empty and is encoded. A problem associated with this approach is that in order to avoid mischaracterizing a non-empty block as an empty block, the fixed threshold is set unnecessarily low and empty blocks still end up being encoded. This unnecessary encoding wastes computing power.
For these and other reasons there is a need for the present invention.
In one embodiment of the present invention, a residual video block is received, and a probabilistic threshold is employed to predict whether the block is non-empty without encoding the block.